package fake

import (
	"gintify/core"
	"gintify/model"
	"gorm.io/gorm"
)

func FakeRoles() {
	db := core.DB
	//roles := &model.SysRole{Name: "Administrator", ParentId: 0, Description: "超级管理员角色，自动生成"}
	_ = db.Transaction(func(tx *gorm.DB) error {
		if tx.First(&model.SysRole{}).RowsAffected > 0 {
			core.LG.Errorf("SysRole表不为空")
			return nil
		}
		var menus []*model.SysMenu
		if err := tx.Model(&model.SysMenu{}).Find(&menus).Error; err != nil {
			core.LG.Errorf("获取SysMenu列表失败, %v\n", err)
			return err
		}
		//TODO 由于闭包存在，roles不能放在全局变量
		var roles = []model.SysRole{
			{Name: "Administrator", ParentId: 0, Description: "超级管理员角色，自动生成", Menus: menus},
			{Name: "User", ParentId: 0, Description: "普通用户角色，自动生成"},
		}
		for _, role := range roles {
			if err := tx.Model(&model.SysRole{}).Create(&role).Error; err != nil {
				core.LG.Errorf("创建SysRole失败, %v\n", err)
				return err
			}
		}

		return nil
	})
}
